/**
 * Class:				FileManager.java
 * 
 * Project:				Bio-inspired car commander
 * 
 * Subproject:			Word Detector
 * 
 * Date: 				Mai - Juillet 2011
 * 
 * Auteurs:				Bruno Da Silva
 * 						Thomas Jordan
 * 
 * Description:
 * 
 *	Permet d'ecrire ou lire un fichier textuel. 
 */
package mfccExtraction;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.LinkedList;

public class FileManager {

	/**
	 * Ecrit un liste chainées de string comme une collection de lignes de texte dans
	 * un fichier text.
	 * 
	 * @param filePath  chemin pour écrire
	 * @param content	contenu
	 */
	public static void ecrireFichier(String filePath, LinkedList<String> content){

		//Extract the path and check if exist. If not, create the arboresence
		String dirLocation = filePath.substring(0,filePath.lastIndexOf("/"));

		File directory = new File(dirLocation);
		directory.mkdirs();

		File file = new File(filePath);
		//Flux pour écrire dans les fichiers
		PrintWriter outputFile;

		try {
			 
			outputFile = new PrintWriter(new FileWriter(file,true));
			for (String ligne:content){
				outputFile.append(ligne+"\n");
			}
			outputFile.close();


		} catch (IOException e) {

			e.printStackTrace();
			System.exit(0);
		}
	}
	
	/**
	 * Fonction qui lis un fichier texte et le charge dans une liste de lignes.
	 * 
	 * @return					le fichier lu
	 * @throws IOException
	 */
	public static LinkedList <String> chargerFichier(String chemin) throws IOException {

		//Structure de donnée pour stocker le dataset
		LinkedList <String> dataset = new LinkedList<String>();

		//Charge chaque ligne comme un string dans la linkedlist.
		try
		{
			//Local Error treating
			dataset = chargerFichierNoErrorTreating(chemin);
		}
		catch (FileNotFoundException e)
		{
			e.printStackTrace();
			System.out.println("Impossible de trouver le dataset. File not found.");
			System.out.println("Arrêt de l'application");
			System.exit(0);
		}

		return dataset;
	}
	
	
	public static LinkedList <String> chargerFichierNoErrorTreating(String Chemin) throws IOException {

		//Structure de donnée pour stocker le dataset
		LinkedList <String> dataset = new LinkedList<String>();

		//Charge chaque ligne comme un string dans la linkedlist.

		BufferedReader fichier_source = new BufferedReader(new FileReader(new File(Chemin)));
		String chaine;
		int i = 1;

		while((chaine = fichier_source.readLine())!= null)
		{
			dataset.add(chaine);
			i++;
		}
		fichier_source.close();	
		fichier_source = null;

		return dataset;
	}

	
}
